SVN(linux版)安装与使用 |
您所在的位置:网站首页 › linux svn操作 › SVN(linux版)安装与使用 |
SVN(linux版)安装与使用 一 简述: SVN有2种运行方式,一种是 linux自带的轻量级服务器svnserve,一种是基于Apache的。 基于svnserve的,默认端口为3690,通过“svnserve -d -r 目录 端口” 命令启动。使用的是svn协议。 基于Apache的,默认端口为Apache的默认端口80。配置好后apache启动就可以访问。使用的是http协议。
一项目,由于部署在内网,外网通过nginx转发,那就只能通过http转发,只能采用apache这种方式了。即nginx+apache+svn。 二: 安装 2.1) svnserve 运行模式Linux下单独安装SVN,那就是安装svnserve这种了。 步骤参考: https://blog.csdn.net/zhihua_w/article/details/80631403 https://blog.csdn.net/qq_27868061/article/details/81094187
主要步骤与命令: 1. 查看是否安装/版本号 svnserve --version 注意:使用以下命令安装的,一般版本会比较低一些(1.06),如果需要使用最新版本(1.12),只能到官网上下载源代码版,然后手工编译。 2. 安装命令(centos) yum install subversion 安装命令(suse) zypper install subversion 如果没有找到,可以按以下方式配置安装源 zypper ar http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/12.2/repo/oss/ svnpkg zypper refresh 3)查看安装目录 whereis subversion 4)创建一个SVN仓库目录 svnadmin create myProject 如:svnadmin create /home/svn/repos1 进入文件夹查看可看到文件夹包含了conf、db、format、hooks、locks、 README.txt等文件,说明一个SVN库已经建立。 5) 用户配置 conf下几个文件authz,passwd,svnserve.conf。其中authz 是权限控制,可以设置哪些用户可以访问哪些目录,passwd是设置用户和密码的,svnserve是设置svn相关的操作 5.1配置 svnserv.conf # vim svnserv.conf[general]anon-access = none # 使非授权用户无法访问auth-access = write # 使授权用户有写权限password-db = password # 用户密码文件authz-db = authz # 访问控制文件realm = /home/svn/project # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。# 采用默认配置,以上语句都必须顶格写,左侧不能留空格,否则会出错。5.2.配置passwd(格式:帐号=密码) [users]# harry = harryssecret# sally = sallyssecretusername = 123456 注: 这种配置的不好是密码没有加密,最好用htpasswd的方式创建,下有。5.3.配置authz权限 # 在末尾添加如下代码[/]username = rw # r:读,w:写 6) 启动服务 指定端口启动:svnserve -d -r /etc/subversion/myProject/ --listen-port 9092 例:svnserve -d -r /home/svn/ --listen-port 9092 7) 测试访问 防火墙临时放开端口:iptables -I INPUT -ptcp --dport 9092 -j ACCEPT 访问:svn://IP:端口 如:svn://127.0.0.1:9092 --------------------------------------- 2) apache 运行模式 如果需要通过http这种方式访问,那就需要apache的协助,安装apache的mod_dav协议模块。
1. 获取一下svn的源码包版本: http://subversion.apache.org/download.cgi#recommended-release
2. 编译svn让生成mod_dav_svn.so与mod_auth_svn.so ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apxs=/usr/local/apache2/bin/apxs --with-zlib --enable-maintainer-mode --with-apr-util=/usr/local/apr-util --with-lz4=internal --with-utf8proc=internal 红色部分路径按实际修改,如有些环境的apache是安装在/usr/local/httpd目录下的;另外,测试过--with-apxs这个可以不加,会自动去目标服务器上搜索寻找。 make make install 如果只是为了生成mod_dav_svn.so与mod_auth_svn.so两个文件,这个make install可以不用操作。
3. 配置生效apache的mod_dav_svn模块关联 1) 将mod_dav_svn.so与mod_auth_svn.so 复制到apache的modules目录下 2) 配置httpd.conf模块,增加mod_dav_svn的配置 配置apache通过mod_dav_svn模块访问SVN服务器,在文件的最后添加: vim /usr/locol/httpd/conf/httpd.conf LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so DAV svn SVNParentPath /home/svn111 ----存放仓库 AuthType Basic AuthName"SVN server of test!" AuthUserFile /home/svn111/passwd ----passwd存储用户名和密码,自定义 AuthzSVNAccessFile /home/svn111/auth ----存放用户的权限,自定义 Require valid-user4. 重启apache启动svn服务 说明:这种方式下,这样就可以访问svn了。 5.增加用户与密码(注意apache版的需要使用htpasswd创建) htpasswd -c /home/svn111/repos1/.passwd admin 这时不需要配置svnserv.conf等文件 新增用户: htpasswd -b .passwd 用户 密码 6. 配置用户权限vi auth.conf 7. 配置SVN提交时强制写日志(可选) SVN默认可以不写注释提交,有时候可能忘记写注释,有的人也没有写注释的习惯,导致翻看history的时候都不知道做了哪些更改,可以依照以下步骤修改SVN配置,强制提交SVN前写注释 cd /home/svn/hookscp pre-commit.tmpl pre-commitchmod 700 pre-commit #获取可执行权限vi pre-commitREPOS="$1"TXN="$2"comment=0SVNLOOK=/usr/bin/svnlook$SVNLOOK log -t "$TXN" "$REPOS" | \ grep "[a-zA-Z0-9\u4e00-\u9fa5]" || comment=1if [ $comment -eq 1 ]then echo "请填写中文或者英文备注" 1>&2 exit 1else exit 0fi
说明: 编译subversion的时候,会有一些依赖包,sqlite3,apr,apr-util这3个是必须的,需要提前安装配置好。 1) sqlite安装 sqlite不需要安装,只需要解压,复制到svn解压后的源码包中即可。 下载路径:https://www.sqlite.org/2015/sqlite-amalgamation-3081101.zip unzip sqlite-amalgamation-3240000.zip mv sqlite-amalgamation-3240000 subversion-1.10.0/sqlite-amalgamation 2)apr-util安装 tar -zxf apr-util-1.6.1.tar.gz cd ./apr-util-1.6.1 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install这里需要注意./configure命令,这个命令作为编译配置有很多选项,如果失败,需要添加合适的选项,错误如下: 错误1:configure: error: Subversion requires LZ4 >= r129, or use --with-lz4=internal解决:./configure命令添加 --with-lz4=internal选项 错误2:configure: error: Subversion requires UTF8PROC解决:./configure命令添加 --with-utf8proc=internal 错误3:配置好mod_dav_svn配置后重启apache时,如果报make: *** [subversion/libsvn_subr/libsvn_subr-1.la] error 1,那就表麻烦了,还是说明这两个mod_dav_svn.so与mod_auth_svn.so如果从别的地方copy过来,而不是编译的话,会有很多依赖包的关系识别不到。只能本地重新编译了。 /home/admin/subversion-1.10.4/subversion/libsvn_subr/xml.c:70: undefined reference to `XML_ExpatVersion'.libs/xml.o: In function `expat_start_handler': ... 1.10.4/subversion/libsvn_subr/xml.c:536: undefined reference to `XML_SetCharacterDataHandler'/home/admin/subversion-1.10.4/subversion/libsvn_subr/xml.c:538: undefined reference to `XML_SetEntityDeclHandler'collect2: ld returned 1 exit statusmake: *** [subversion/libsvn_subr/libsvn_subr-1.la] 错误 1 错误4:编译过程如果报 /lib64/libc.so.6: version `GLIBC_2.14' not found,则需要下载GLIBC_2.17以上重新安装 参考:https://www.cnblogs.com/bonelee/p/8310389.html 如果这过程,编译的库失败导致出现系统连接不上等lib库无法使用问题,则需要回退 LD_PRELOAD=/lib64/libc-2.14.so rm /lib64/libc.so.6 LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /lib64/libc.so.6 错误5:编译过程如果报 configure: error: no XML parser was found: expat or libxml 2.x required wget http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download 安装 expat 后重新安装即可 获取 neno configure后目录下的libtool,替换到svn的安装目录下,重新编译 错误6:Svn 不能打开文件 '*****/db/txn-current-lock': 权限不够 https://blog.csdn.net/qq_36014367/article/details/84098634
------------------------------------------------------------------------------------------- 三:subversion目录说明: ├── conf│ ├── authz 配置用户组权限│ ├── passwd 配置用户/用户组密码│ └── svnserve.conf 配置文件主入口├── db│ ├── current│ ├── format│ ├── fsfs.conf│ ├── fs-type│ ├── min-unpacked-rev│ ├── rep-cache.db│ ├── revprops│ │ └── 0│ │ ├── 0│ │ ├── 1│ │ ├── 2│ │ └── 3│ ├── revs --上传的文件放到这里│ │ └── 0│ │ ├── 0│ │ ├── 1│ │ ├── 2│ │ └── 3│ ├── transactions│ ├── txn-current│ ├── txn-current-lock│ ├── txn-protorevs│ ├── uuid│ └── write-lock├── format├── hooks│ ├── post-commit.tmpl│ ├── post-lock.tmpl│ ├── post-revprop-change.tmpl│ ├── post-unlock.tmpl│ ├── pre-commit.tmpl│ ├── pre-lock.tmpl│ ├── pre-revprop-change.tmpl│ ├── pre-unlock.tmpl│ └── start-commit.tmpl├── locks│ ├── db.lock│ └── db-logs.lock└── README.txt
----------------------------------------------------------------------- 四: SVN的备份&备份恢复 参考: https://www.cnblogs.com/pipi928/p/7448586.html https://blog.csdn.net/baidu_38432732/article/details/80637937
首次备份(全量备份): svnadmin hotcopy 待备份的目录 备份到的目录 后续备份(增量备份): svnadmin dump 待备份的目录 --incremental --r [--revision] > 备份到的目录 -q [--quiet] 说明: 1. svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。 2. 增量备份需要先查看下当前最新的版本号,svnlook youngest查看一下project最新的版本号,显示最新版本记录为4。-q [--quiet] :在标准错误输出不显示进度(仅错误) 备份恢复: svnadmin create /svn/project/test #创建一个新的版本库 svnadmin load /svn/project/test |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |